define(['./BaseVersionManager', './utils'],
|
function(BaseVersionManager, utils) {
|
|
//app version manager manage config and framework version
|
function AppWidgetManager(){
|
this.versions = [{
|
version: '1.0',
|
|
description: 'The version embedded in portal 10.3 final.',
|
|
upgrader: function(oldConfig){
|
return oldConfig;
|
},
|
//if true, means widgets that depend on the last version can run in this version.
|
//if not set, means true.
|
compatible: true
|
}, {
|
version: '1.1',
|
|
description: 'The version embedded in online3.6, and used in developer edition 1.0.',
|
|
upgrader: function(oldConfig){
|
if(oldConfig.widgetOnScreen && oldConfig.widgetOnScreen.panel &&
|
(oldConfig.widgetOnScreen.panel.uri === 'themes/FoldableTheme/panels/TitlePanel/Panel' ||
|
oldConfig.widgetOnScreen.panel.uri === 'jimu/BaseWidgetPanel')){//In 1.0, tab theme use 'jimu/BaseWidgetPanel'
|
oldConfig.widgetOnScreen.panel.uri = 'jimu/PreloadWidgetIconPanel';
|
}
|
|
return oldConfig;
|
},
|
compatible: true
|
}, {
|
version: '1.2',
|
|
description: 'The version embedded in online3.7.',
|
|
upgrader: function(oldConfig){
|
var i = 0;
|
if(oldConfig.widgetOnScreen && oldConfig.widgetOnScreen.widgets){
|
//add splash widget
|
var findSplashWidget = false;
|
for(i = 0; i < oldConfig.widgetOnScreen.widgets.length; i++){
|
if(oldConfig.widgetOnScreen.widgets[i].uri === 'widgets/Splash/Widget'){
|
findSplashWidget = true;
|
}
|
}
|
|
if(!findSplashWidget){
|
oldConfig.widgetOnScreen.widgets.push({
|
"uri": "widgets/Splash/Widget",
|
"visible": false,
|
"positionRelativeTo": "browser",
|
"version": "1.2"
|
});
|
}
|
|
var findTimesliderWidget = false;
|
for(i = 0; i < oldConfig.widgetOnScreen.widgets.length; i++){
|
if(oldConfig.widgetOnScreen.widgets[i].uri === 'widgets/TimeSlider/Widget'){
|
findTimesliderWidget = true;
|
}
|
}
|
|
if(!findTimesliderWidget){
|
oldConfig.widgetOnScreen.widgets.push({
|
"uri": "widgets/TimeSlider/Widget",
|
"visible": false,
|
"position": {
|
"bottom": 55,
|
"left": 7
|
},
|
"version": "1.2"
|
});
|
}
|
|
var findSwipeWidget = false;
|
for(i = 0; i < oldConfig.widgetOnScreen.widgets.length; i++){
|
if(oldConfig.widgetOnScreen.widgets[i].uri === 'widgets/Swipe/Widget'){
|
findSwipeWidget = true;
|
}
|
}
|
|
if (!findSwipeWidget){
|
oldConfig.widgetOnScreen.widgets.push({
|
"uri": "widgets/Swipe/Widget",
|
"visible": false,
|
"position": {
|
"top": 145,
|
"left": 7
|
},
|
"version": "1.2"
|
});
|
}
|
}
|
|
return oldConfig;
|
},
|
compatible: true
|
}, {
|
version: '1.3',
|
|
description: 'The version embedded in online3.8 & online3.9.',
|
|
upgrader: function(oldConfig){
|
upgradePositionRelativeTo(oldConfig);
|
renamePreloadWidgetIconPanelToOnScreenWidgetPanel(oldConfig);
|
add2PlaceholdersForFoldableTheme(oldConfig);
|
renameGeocoderToSearch(oldConfig);
|
addCloeableForSwipeAndTimeslider(oldConfig);
|
addZoomSliderWidget(oldConfig);
|
addLoadingPage(oldConfig);
|
|
/*******************functions********************/
|
|
function addCloeableForSwipeAndTimeslider(oldConfig){
|
var i = 0;
|
for(i = oldConfig.widgetOnScreen.widgets.length - 1; i >= 0; i--){
|
var widget = oldConfig.widgetOnScreen.widgets[i];
|
if(widget.uri === 'widgets/Swipe/Widget' && !widget.closeable){
|
//add closeable check to avoid multiple enter in loop
|
oldConfig.widgetOnScreen.widgets.splice(i, 1);
|
if(widget.visible !== false){
|
widget.closeable = true;
|
//put swipe in the first avialable placeholder
|
var placeIndex = getFirstPlaceholder(oldConfig);
|
if(placeIndex >= 0){
|
widget.position = oldConfig.widgetOnScreen.widgets[placeIndex].position;
|
oldConfig.widgetOnScreen.widgets[placeIndex] = widget;
|
}
|
}
|
}
|
|
if(widget.uri === 'widgets/TimeSlider/Widget'){
|
if(widget.visible === false){
|
oldConfig.widgetOnScreen.widgets.splice(i, 1);
|
}else{
|
widget.closeable = true;
|
}
|
}
|
}
|
}
|
|
function getFirstPlaceholder(oldConfig){
|
var i = 0;
|
for(i = 0; i < oldConfig.widgetOnScreen.widgets.length; i++){
|
if(!oldConfig.widgetOnScreen.widgets[i].uri){
|
return i;
|
}
|
}
|
return -1;
|
}
|
|
function addZoomSliderWidget(oldConfig){
|
oldConfig.widgetOnScreen.widgets.push({
|
"uri": "widgets/ZoomSlider/Widget",
|
"position": {
|
"top": 5,
|
"left": 7
|
},
|
"version": "1.3"
|
});
|
}
|
|
function renameGeocoderToSearch(){
|
var i = 0, j = 0;
|
var findGeocoderWidget = false;
|
for(i = 0; i < oldConfig.widgetOnScreen.widgets.length; i++){
|
if(oldConfig.widgetOnScreen.widgets[i].uri === 'widgets/Geocoder/Widget'){
|
findGeocoderWidget = true;
|
break;
|
}
|
}
|
|
var findSearchWidget = false;
|
for(j = 0; j < oldConfig.widgetOnScreen.widgets.length; j++){
|
if(oldConfig.widgetOnScreen.widgets[j].uri === 'widgets/Search/Widget'){
|
findSearchWidget = true;
|
break;
|
}
|
}
|
|
if (!findSearchWidget) {
|
if (findGeocoderWidget) {
|
var geocoder = oldConfig.widgetOnScreen.widgets[i];
|
geocoder.uri = "widgets/Search/Widget";
|
geocoder.name = "Search";
|
}
|
}
|
}
|
|
function add2PlaceholdersForFoldableTheme(oldConfig){
|
if(oldConfig.widgetOnScreen && oldConfig.widgetOnScreen.widgets) {
|
//add two new placeholders for FoldableTheme
|
if(oldConfig.theme && oldConfig.theme.name === 'FoldableTheme'){
|
var ph_7 = null;
|
var ph_8 = null;
|
|
var placeholder = oldConfig.widgetOnScreen.widgets[4];
|
|
if(placeholder){
|
if(placeholder.position.top !== undefined){
|
//default layout of FoldableTheme
|
ph_7 = {
|
"position": {
|
"left": 205,
|
"top": 45
|
}
|
};
|
ph_8 = {
|
"position": {
|
"left": 255,
|
"top": 45
|
}
|
};
|
}else{
|
//layout1 of FoldableTheme
|
ph_7 = {
|
"position": {
|
"left": 205,
|
"bottom": 55
|
}
|
};
|
ph_8 = {
|
"position": {
|
"left": 255,
|
"bottom": 55
|
}
|
};
|
}
|
|
oldConfig.widgetOnScreen.widgets.splice(7, 0, ph_7, ph_8);
|
}
|
}
|
}
|
}
|
|
function upgradePositionRelativeTo(oldConfig){
|
utils.visitElement(oldConfig, function(element){
|
if(element.positionRelativeTo){
|
if(element.position){
|
element.position.relativeTo = element.positionRelativeTo;
|
}else{
|
element.position = {
|
relativeTo: element.positionRelativeTo
|
};
|
}
|
|
if(element.panel){
|
if(element.panel.position){
|
element.panel.position.relativeTo = element.panel.positionRelativeTo;
|
}else{
|
element.panel.position = {
|
relativeTo: element.panel.positionRelativeTo
|
};
|
}
|
}
|
}
|
});
|
|
var section = oldConfig.widgetOnScreen;
|
if(section && section.panel &&
|
section.panel.positionRelativeTo){
|
|
if(section.panel.position){
|
section.panel.position.relativeTo =
|
section.panel.positionRelativeTo;
|
}else{
|
section.panel.position = {
|
relativeTo: section.panel.positionRelativeTo
|
};
|
}
|
}
|
|
section = oldConfig.widgetPool;
|
if(section && section.panel &&
|
section.panel.positionRelativeTo){
|
|
if(section.panel.position){
|
section.panel.position.relativeTo =
|
section.panel.positionRelativeTo;
|
}else{
|
section.panel.position = {
|
relativeTo: section.panel.positionRelativeTo
|
};
|
}
|
}
|
}
|
|
function renamePreloadWidgetIconPanelToOnScreenWidgetPanel(oldConfig){
|
if(oldConfig.widgetOnScreen && oldConfig.widgetOnScreen.panel &&
|
oldConfig.widgetOnScreen.panel.uri === 'jimu/PreloadWidgetIconPanel'){
|
oldConfig.widgetOnScreen.panel.uri = 'jimu/OnScreenWidgetPanel';
|
}
|
}
|
|
function addLoadingPage(oldConfig){
|
//for XT1.2
|
if(!oldConfig.loadingPage){
|
oldConfig.loadingPage = {
|
"backgroundColor": "#508dca",
|
"backgroundImage":{
|
"visible":false
|
},
|
"loadingGif":{
|
"visible": true,
|
"uri": "configs/loading/images/predefined_loading_1.gif",
|
"width": 58,
|
"height": 58
|
}
|
};
|
}
|
}
|
|
return oldConfig;
|
},
|
compatible: true
|
}, {
|
version: '1.4',
|
|
description: 'The version embedded in online3.10.',
|
|
upgrader: function(oldConfig){
|
updatePaddingRightOfHeaderController(oldConfig);
|
|
/*******************functions********************/
|
function updatePaddingRightOfHeaderController(oldConfig){
|
if(oldConfig.theme){
|
var themeName = oldConfig.theme.name;
|
if(themeName === 'FoldableTheme' || themeName === 'JewelryBoxTheme'){
|
if(oldConfig.widgetOnScreen){
|
var widgets = oldConfig.widgetOnScreen.widgets;
|
if(widgets && widgets.length > 0){
|
var uri = "themes/" + themeName + "/widgets/HeaderController/Widget";
|
var widget = null;
|
for(var i = 0; i < widgets.length; i++){
|
widget = widgets[i];
|
if(widget && widget.uri === uri){
|
if(widget.position){
|
if(widget.position.paddingRight === 310){
|
widget.position.paddingRight = 275;
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
|
return oldConfig;
|
},
|
compatible: true
|
}, {
|
version: '2.0beta',
|
|
description: 'The version for Developer Edition beta 2.0.',
|
|
upgrader: function(oldConfig){
|
oldConfig.keepAppState = true;
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.0',
|
|
description: 'The version for Online 4.1.',
|
|
upgrader: function(oldConfig){
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.0.1',
|
|
description: 'The version for Developer Edition 2.0.',
|
|
upgrader: function(oldConfig){
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.1',
|
|
description: 'The version for Online 4.2.',
|
|
upgrader: function(oldConfig){
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.2',
|
|
description: 'The version for Online 4.3.',
|
|
upgrader: function(oldConfig){
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.3',
|
|
description: 'The version for Online 4.4.',
|
|
upgrader: function(oldConfig){
|
var onScreenWidgets = oldConfig.widgetOnScreen.widgets;
|
var mobileOnScreenWidgets = oldConfig.mobileLayout && oldConfig.mobileLayout.widgetOnScreen &&
|
oldConfig.mobileLayout.widgetOnScreen.widgets;
|
addExtentNavigateWidget(oldConfig, onScreenWidgets, mobileOnScreenWidgets);
|
|
/***************functions****************/
|
function addExtentNavigateWidget(oldConfig, onScreenWidgets, mobileOnScreenWidgets){
|
var themeName = oldConfig.theme && oldConfig.theme.name;
|
if(themeName === 'FoldableTheme'){
|
addExtentNavigateWidgetForFoldableTheme(onScreenWidgets, mobileOnScreenWidgets);
|
}else if(themeName === 'BillboardTheme'){
|
addExtentNavigateWidgetForBillboardTheme(onScreenWidgets);
|
}else if(themeName === 'BoxTheme'){
|
addExtentNavigateWidgetForBoxTheme(onScreenWidgets);
|
}else if(themeName === 'JewelryBoxTheme'){
|
addExtentNavigateWidgetForJewelryBoxTheme(onScreenWidgets);
|
}else if(themeName === 'LaunchpadTheme'){
|
addExtentNavigateWidgetForLaunchpadTheme(onScreenWidgets, mobileOnScreenWidgets);
|
}else if(themeName === 'PlateauTheme'){
|
addExtentNavigateWidgetForPlateauTheme(onScreenWidgets);
|
}else if(themeName === 'TabTheme'){
|
addExtentNavigateWidgetForTabTheme(onScreenWidgets);
|
}
|
}
|
|
//if true, means a contains b.
|
//if false, means a doesn't contain b
|
//example: {uri: "widgets/Slide/Widget",position:{left:10,right:10}} contains {position:{left:10,right:10}}}
|
function isContains(a, b){
|
if(!a || !b){
|
return false;
|
}
|
for(var key in b){
|
if(b.hasOwnProperty(key)){
|
if(typeof b[key] === "object"){
|
if(!isContains(a[key], b[key])){
|
return false;
|
}
|
}else{
|
if(a[key] !== b[key]){
|
return false;
|
}
|
}
|
}
|
}
|
return true;
|
}
|
|
function addExtentNavigateWidgetForFoldableTheme(onScreenWidgets, mobileOnScreenWidgets){
|
|
function isDefaultLayoutOrLayout1OrLayout2(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[11], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 7,
|
"top": 110
|
}
|
});
|
return isRightMyLocationWidget;
|
}
|
|
function isLayout3(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[11], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 12,
|
"bottom": 164
|
}
|
});
|
return isRightMyLocationWidget;
|
}
|
|
function isLayout4(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[11], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 164,
|
"bottom": 14
|
}
|
});
|
return isRightMyLocationWidget;
|
}
|
|
if(isDefaultLayoutOrLayout1OrLayout2()){
|
//add ExtentNavigate for default layout of FoldableTheme
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"top": 150,
|
"left": 7
|
},
|
"version": "2.3"
|
});
|
}else if(isLayout3()){
|
//add ExtentNavigate for layout3 of FoldableTheme
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"left": 12,
|
"bottom": 203
|
},
|
"version": "2.3"
|
});
|
if(mobileOnScreenWidgets){
|
mobileOnScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"right": 12,
|
"top": 211
|
},
|
"version": "2.3"
|
});
|
}
|
}else if(isLayout4()){
|
//add ExtentNavigate for layout4 of FoldableTheme
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"left": 203,
|
"bottom": 14,
|
"height": 30
|
},
|
"version": "2.3"
|
});
|
for(var i = 0; i < onScreenWidgets.length; i++){
|
var widget = onScreenWidgets[i];
|
if(isContains(widget, {
|
"uri": "widgets/Scalebar/Widget",
|
"position": {
|
"left": 220,
|
"bottom": 5
|
}
|
})){
|
widget.position.left = 288;
|
}
|
|
if(isContains(widget, {
|
"uri": "widgets/Coordinate/Widget",
|
"position": {
|
"left": 395,
|
"bottom": 5
|
}
|
})){
|
widget.position.left = 463;
|
}
|
}
|
if(mobileOnScreenWidgets){
|
mobileOnScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"top": 209,
|
"left": 12
|
},
|
"version": "2.3"
|
});
|
}
|
}
|
}
|
|
function addExtentNavigateWidgetForBillboardTheme(onScreenWidgets){
|
function isDefaultLayout(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[3], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 15,
|
"top": 120
|
}
|
});
|
var isRightPlaceholder = isContains(onScreenWidgets[12], {
|
"position": {
|
"left": 240,
|
"top": 53
|
}
|
});
|
return isRightMyLocationWidget && isRightPlaceholder;
|
}
|
|
function isLayout1(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[3], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 15,
|
"top": 120
|
}
|
});
|
var isRightPlaceholder = isContains(onScreenWidgets[12], {
|
"position": {
|
"top": 10,
|
"right": 195
|
}
|
});
|
return isRightMyLocationWidget && isRightPlaceholder;
|
}
|
|
function isLayout2(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[3], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 15,
|
"bottom": 45
|
}
|
});
|
var isRightPlaceholder = isContains(onScreenWidgets[12], {
|
"position": {
|
"left": 15,
|
"top": 233
|
}
|
});
|
return isRightMyLocationWidget && isRightPlaceholder;
|
}
|
|
function isLayout3(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[3], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 15,
|
"top": 120
|
}
|
});
|
var isRightPlaceholder = isContains(onScreenWidgets[12], {
|
"position": {
|
"right": 15,
|
"top": 195
|
}
|
});
|
return isRightMyLocationWidget && isRightPlaceholder;
|
}
|
|
if (isDefaultLayout()) {
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"left": 15,
|
"top": 159
|
},
|
"version": "2.3"
|
});
|
} else if (isLayout1()) {
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"left": 15,
|
"top": 159
|
},
|
"version": "2.3"
|
});
|
} else if (isLayout2()) {
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"left": 15,
|
"bottom": 195
|
},
|
"version": "2.3"
|
});
|
} else if (isLayout3()) {
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"left": 15,
|
"top": 159
|
},
|
"version": "2.3"
|
});
|
}
|
}
|
|
function addExtentNavigateWidgetForBoxTheme(onScreenWidgets){
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"left": 10,
|
"top": 131
|
},
|
"version": "2.3"
|
});
|
}
|
|
function addExtentNavigateWidgetForJewelryBoxTheme(onScreenWidgets){
|
function isDefaultLayout(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[9], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 7,
|
"top": 110
|
}
|
});
|
var isRightSearchWidget = isContains(onScreenWidgets[2], {
|
"uri": "widgets/Search/Widget",
|
"position": {
|
"left": 55,
|
"top": 5
|
}
|
});
|
var isRightPlaceholder = isContains(onScreenWidgets[4], {
|
"position": {
|
"left": 55,
|
"top": 45
|
}
|
});
|
return isRightMyLocationWidget && isRightSearchWidget && isRightPlaceholder;
|
}
|
|
function isLayout1(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[9], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 7,
|
"top": 110
|
}
|
});
|
var isRightSearchWidget = isContains(onScreenWidgets[2], {
|
"uri": "widgets/Search/Widget",
|
"position": {
|
"left": 55,
|
"top": 5
|
}
|
});
|
var isRightPlaceholder = isContains(onScreenWidgets[4], {
|
"position": {
|
"left": 7,
|
"bottom": 70
|
}
|
});
|
return isRightMyLocationWidget && isRightSearchWidget && isRightPlaceholder;
|
}
|
|
function isLayout2(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[9], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 7,
|
"top": 110
|
}
|
});
|
var isRightSearchWidget = isContains(onScreenWidgets[2], {
|
"uri": "widgets/Search/Widget",
|
"position": {
|
"right": 2,
|
"top": 2,
|
"relativeTo": "browser"
|
}
|
});
|
var isRightPlaceholder = isContains(onScreenWidgets[4], {
|
"position": {
|
"left": 7,
|
"bottom": 70
|
}
|
});
|
return isRightMyLocationWidget && isRightSearchWidget && isRightPlaceholder;
|
}
|
|
if(isDefaultLayout() || isLayout1() || isLayout2()){
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"top": 148,
|
"left": 7
|
},
|
"version": "2.3"
|
});
|
}
|
}
|
|
function addExtentNavigateWidgetForLaunchpadTheme(onScreenWidgets, mobileOnScreenWidgets){
|
function isDefaultLayout(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[6], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 25,
|
"top": 215
|
}
|
});
|
return isRightMyLocationWidget;
|
}
|
|
function isLayout2(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[6], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 25,
|
"top": 215
|
}
|
});
|
return isRightMyLocationWidget;
|
}
|
|
if(isDefaultLayout() || isLayout2()){
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"top": 255,
|
"left": 25
|
},
|
"version": "2.3"
|
});
|
if(mobileOnScreenWidgets){
|
mobileOnScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"right": 10,
|
"bottom": 238
|
},
|
"version": "2.3"
|
});
|
}
|
}
|
}
|
|
function addExtentNavigateWidgetForPlateauTheme(onScreenWidgets){
|
function isDefaultLayout(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[6], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 7,
|
"top": 110
|
}
|
});
|
return isRightMyLocationWidget;
|
}
|
|
function isLayout1(){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[6], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 12,
|
"bottom": 164
|
}
|
});
|
return isRightMyLocationWidget;
|
}
|
|
if(isDefaultLayout()){
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"top": 149,
|
"left": 7
|
},
|
"version": 2.3
|
});
|
}
|
|
if(isLayout1()){
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position": {
|
"left": 12,
|
"bottom": 201
|
},
|
"version": 2.3
|
});
|
}
|
}
|
|
function addExtentNavigateWidgetForTabTheme(onScreenWidgets){
|
var isRightMyLocationWidget = isContains(onScreenWidgets[11], {
|
"uri": "widgets/MyLocation/Widget",
|
"position": {
|
"left": 7,
|
"top": 110
|
}
|
});
|
|
if(isRightMyLocationWidget){
|
onScreenWidgets.push({
|
"uri": "widgets/ExtentNavigate/Widget",
|
"visible": false,
|
"position":{
|
"top": 149,
|
"left": 7
|
},
|
"version": "2.3"
|
});
|
}
|
}
|
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.4',
|
|
description: 'The version for Online 5.1.',
|
|
upgrader: function(oldConfig){
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.5',
|
|
description: 'The version for Online 5.2.',
|
|
upgrader: function (oldConfig) {
|
var onScreenWidgets = oldConfig.widgetOnScreen.widgets;
|
addFullScreenWidget(oldConfig, onScreenWidgets);
|
|
function addFullScreenWidget(oldConfig, onScreenWidgets) {
|
var themeName = oldConfig.theme && oldConfig.theme.name;
|
if (themeName === 'BillboardTheme') {
|
addFullScreenWidgetForBillboardTheme(onScreenWidgets);
|
} else if (themeName === 'BoxTheme') {
|
addFullScreenWidgetForBoxTheme(onScreenWidgets);
|
} else if (themeName === 'DartTheme') {
|
addFullScreenWidgetForDartTheme(onScreenWidgets);
|
} else if (themeName === 'FoldableTheme') {
|
addFullScreenWidgetForFoldableTheme(onScreenWidgets);
|
} else if (themeName === 'DashboardTheme') {
|
addFullScreenWidgetForDashboardTheme(onScreenWidgets);
|
} else if (themeName === 'JewelryBoxTheme') {
|
addFullScreenWidgetForJewelryBoxTheme(onScreenWidgets);
|
} else if (themeName === 'LaunchpadTheme') {
|
addFullScreenWidgetForLaunchpadTheme(onScreenWidgets);
|
} else if (themeName === 'PlateauTheme') {
|
addFullScreenWidgetForPlateauTheme(onScreenWidgets);
|
} else if (themeName === 'TabTheme') {
|
addFullScreenWidgetForTabTheme(onScreenWidgets);
|
}
|
}
|
//if true, means a contains b.
|
//if false, means a doesn't contain b
|
//example: {uri: "widgets/Slide/Widget",position:{left:10,right:10}} contains {position:{left:10,right:10}}}
|
function isContains(a, b) {
|
if (!a || !b) {
|
return false;
|
}
|
for (var key in b) {
|
if (b.hasOwnProperty(key)) {
|
if (typeof b[key] === "object") {
|
if (!isContains(a[key], b[key])) {
|
return false;
|
}
|
} else {
|
if (a[key] !== b[key]) {
|
return false;
|
}
|
}
|
}
|
}
|
return true;
|
}
|
function findWidget(onScreenWidgets, url, idx) {
|
var i = 0, len;
|
if (idx) {
|
i = idx;
|
}
|
for (len = onScreenWidgets.length; i < len; i++) {
|
var widget = onScreenWidgets[i];
|
if (widget && widget.uri && widget.uri === url) {
|
return widget;
|
}
|
}
|
|
return null;
|
}
|
|
//1 BillboardTheme
|
function addFullScreenWidgetForBillboardTheme(onScreenWidgets) {
|
function isDefaultLayoutOrLayout2() {
|
var isInThatPosition0 = isContains(onScreenWidgets[8], {
|
"position": {
|
"left": 60,
|
"top": 53
|
}
|
});
|
var isInThatPosition2 = isContains(onScreenWidgets[8], {
|
"position": {
|
"left": 15,
|
"top": 53
|
}
|
});
|
return isInThatPosition0 || isInThatPosition2;
|
}
|
/*function isLayout1OrLayout3() {
|
var isInThatPosition1 = isContains(onScreenWidgets[8], {
|
"position": {
|
"top": 10,
|
"right": 15
|
}
|
});
|
var isInThatPosition3 = isContains(onScreenWidgets[8], {
|
"position": {
|
"right": 15,
|
"top": 10
|
}
|
});
|
return isInThatPosition1 || isInThatPosition3;
|
}*/
|
|
if (isDefaultLayoutOrLayout2()) {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 8,
|
"top": 8
|
},
|
"version": "2.5"
|
});
|
} else/* if (isLayout1OrLayout3())*/ {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 8,
|
"bottom": 55
|
},
|
"version": "2.5"
|
});
|
}
|
}
|
|
//2 BoxTheme
|
function addFullScreenWidgetForBoxTheme(onScreenWidgets) {
|
function isDefaultLayout() {
|
var isInThatPosition0 = isContains(findWidget(onScreenWidgets,
|
"themes/BoxTheme/widgets/BoxController/Widget"), {
|
"position": {
|
"right": 0,
|
"bottom": 0
|
}
|
});
|
return isInThatPosition0;
|
}
|
/*function isLayout1() {
|
var isInThatPosition1 = isContains(findWidget(onScreenWidgets,
|
"themes/BoxTheme/widgets/BoxController/Widget"), {
|
"position": {
|
"right": 0,
|
"top": 0
|
}
|
});
|
return isInThatPosition1;
|
}*/
|
|
if (isDefaultLayout()) {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 8,
|
"top": 8
|
},
|
"version": "2.5"
|
});
|
} else/* if (isLayout1()) */ {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 8,
|
"bottom": 8
|
},
|
"version": "2.5"
|
});
|
}
|
}
|
|
//3 DartTheme
|
function addFullScreenWidgetForDartTheme(onScreenWidgets) {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 8,
|
"top": 8
|
},
|
"version": "2.5"
|
});
|
}
|
|
//4 FoldableTheme
|
function addFullScreenWidgetForFoldableTheme(onScreenWidgets) {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 8,
|
"top": 8
|
},
|
"version": "2.5"
|
});
|
}
|
|
//5 DashboardTheme
|
function addFullScreenWidgetForDashboardTheme(onScreenWidgets) {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 8,
|
"top": 8
|
},
|
"version": "2.5"
|
});
|
}
|
|
//6 LaunchpadTheme
|
function addFullScreenWidgetForLaunchpadTheme(onScreenWidgets) {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 70,
|
"top": 20
|
},
|
"version": "2.5"
|
});
|
}
|
|
//7 JewelryBoxTheme
|
function addFullScreenWidgetForJewelryBoxTheme(onScreenWidgets) {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 8,
|
"top": 8
|
},
|
"version": "2.5"
|
});
|
}
|
|
//8 PlateauTheme
|
function addFullScreenWidgetForPlateauTheme(onScreenWidgets) {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 8,
|
"top": 8
|
},
|
"version": "2.5"
|
});
|
}
|
|
//9 TabTheme
|
function addFullScreenWidgetForTabTheme(onScreenWidgets) {
|
function isDefaultLayout() {
|
var isInThatPosition0 = isContains(onScreenWidgets[7], {
|
"position": {
|
"left": 45,
|
"top": 45
|
}
|
});
|
return isInThatPosition0;
|
}
|
/*function isLayout1() {
|
var isInThatPosition1 = isContains(onScreenWidgets[7], {
|
"position": {
|
"right": 110,
|
"top": 10
|
}
|
});
|
return isInThatPosition1;
|
}*/
|
|
if (isDefaultLayout()) {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 8,
|
"top": 8
|
},
|
"version": "2.5"
|
});
|
} else/* if (isLayout1()) */ {
|
onScreenWidgets.push({
|
"uri": "widgets/FullScreen/Widget",
|
"visible": false,
|
"position": {
|
"right": 8,
|
"bottom": 55
|
},
|
"version": "2.5"
|
});
|
}
|
}
|
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.6',
|
|
description: 'The version for Online 5.3.',
|
|
upgrader: function(oldConfig){
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.7',
|
|
description: 'The version for Online 5.4.',
|
|
upgrader: function(oldConfig){
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.8',
|
|
description: 'The version for Online 6.1.',
|
|
upgrader: function(oldConfig){
|
|
upgradeDataSource(oldConfig);
|
|
function upgradeDataSource(oldConfig) {
|
var dataSources = oldConfig.dataSource && oldConfig.dataSource.dataSources;
|
if (dataSources) {
|
var vaildDataSources = getFeatureStatisticsDataSource(dataSources);
|
if (vaildDataSources && vaildDataSources.length) {
|
vaildDataSources.forEach(function(ds) {
|
var statistics = ds.dataSchema && ds.dataSchema.statistics;
|
if (statistics && statistics.length) {
|
statistics.forEach(function(statistic) {
|
if (statistic && statistic.statisticType === 'count' &&
|
statistic.outStatisticFieldName === 'count') {
|
statistic.outStatisticFieldName = 'STAT_COUNT';
|
return;
|
}
|
statistic.outStatisticFieldName = upperCaseOutStatisticFieldName(statistic.outStatisticFieldName);
|
});
|
}
|
|
});
|
}
|
}
|
}
|
|
function getFeatureStatisticsDataSource(dataSources) {
|
var dss = [];
|
if (typeof dataSources === 'object') {
|
for (var label in dataSources) {
|
var ds = dataSources[label];
|
if (ds.type === 'FeatureStatistics') {
|
dss.push(ds);
|
}
|
}
|
}
|
return dss;
|
}
|
|
function upperCaseOutStatisticFieldName(osName) {
|
return osName && osName.toUpperCase();
|
}
|
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.9',
|
|
description: 'The version for Online 6.2.',
|
|
upgrader: function(oldConfig){
|
return oldConfig;
|
},
|
|
compatible: true
|
}, {
|
version: '2.10',
|
|
description: 'The version for Online 6.3.',
|
|
upgrader: function(oldConfig){
|
return oldConfig;
|
},
|
|
compatible: true
|
}];
|
|
this.isCompatible = function(_oldVersion, _newVersion){
|
var oldVersionIndex = this.getVersionIndex(_oldVersion);
|
var newVersionIndex = this.getVersionIndex(_newVersion);
|
var i;
|
for(i = oldVersionIndex + 1; i <= newVersionIndex; i++){
|
if(this.versions[i].compatible === false){
|
return false;
|
}
|
}
|
return true;
|
};
|
}
|
|
AppWidgetManager.prototype = new BaseVersionManager();
|
AppWidgetManager.prototype.constructor = AppWidgetManager;
|
return AppWidgetManager;
|
});
|