8266b9e672caab8e668745555a381e4c42d4d385.svn-base 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. BemsWebApplication.Zone = function( params, viewInfo) {
  2. "use strict";
  3. var buildingDataSource = BemsWebApplication.db.createDataSource( 'CmBuilding', true ),
  4. floorDataSource = BemsWebApplication.db.createDataSource( 'CmFloor', true );
  5. var buildings = ko.observableArray(),
  6. floors = ko.observableArray();
  7. var buildingsForSearch = ko.observableArray(),
  8. floorsForSearch = ko.observableArray(),
  9. buildingIdForSerach = ko.observable(),
  10. floorIdForSerach = ko.observable();
  11. var deferredForSearch = new $.Deferred();
  12. function handleChangedBuildingInSearchView( e ) {
  13. if( e.value === 0 ) {
  14. floorsForSearch( getDefaultFloorForSearch() );
  15. }
  16. else {
  17. BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', e.value, floorsForSearch, getDefaultFloorForSearch() );
  18. }
  19. floorIdForSerach( 0 );
  20. }
  21. var viewModel = BWA.DataGrid.createViewWithDataGrid( params, viewInfo, 'CmZone', {
  22. dataSourceOptions: {
  23. select: ['SiteId', 'FloorId', 'BuildingId', 'ZoneId', 'Name', 'CmBuilding/Name', 'CmFloor/Name', 'Target_temperature', 'Target_humidity'],
  24. expand: [ 'CmBuilding', 'CmFloor' ],
  25. extendOptions: {
  26. forceOriginalField: true,
  27. }
  28. },
  29. columns: [
  30. { dataField: 'ZoneId', caption: $G('number'), width: '15%', alignment: 'center' },
  31. { dataField: 'CmBuilding/Name', caption: $G('buildingName'), width: '22%', alignment: 'center' },
  32. { dataField: 'CmFloor/Name', caption: $G('floorName'), width: '23%', alignment: 'center' },
  33. { dataField: 'Name', caption: $G( 'zoneName' ), width: '40%', alignment: 'center' },
  34. { dataField: 'Target_temperature', caption: '목표온도', width: '40%', alignment: 'center' },
  35. { dataField: 'Target_humidity', caption: '목표습도', width: '40%', alignment: 'center' }
  36. //utils.datagrid.columnIsUse( '15%' )
  37. ],
  38. popupWidth: 480,
  39. promiseDataInSearchView: deferredForSearch.promise(),
  40. searchViewItems: [
  41. { id: 'BuildingId', ignoreValue: 0, defaultValue: 0, value: buildingIdForSerach, dataSource: buildingsForSearch, handleChangedValue: handleChangedBuildingInSearchView },
  42. { id: 'FloorId', ignoreValue: 0, defaultValue: 0, withCheckId: 'BuildingId', value: floorIdForSerach, dataSource: floorsForSearch },
  43. { id: 'Name' }
  44. ],
  45. handleViewShowing: function() {
  46. buildingDataSource.load().done( function( buildingResults ) {
  47. buildings( buildingResults );
  48. buildingsForSearch( $SearchView.createArrayOfSelectBox( 'BuildingId', buildings() ) );
  49. floorsForSearch( getDefaultFloorForSearch() );
  50. buildingIdForSerach( 0 );
  51. floorIdForSerach( 0 );
  52. deferredForSearch.resolve();
  53. });
  54. },
  55. handleDataGridRowClick: function (id,dataGrid,clickRow,popupVisible) {
  56. dataGrid.clearSelection();
  57. var data = clickRow.data;
  58. var dataModel = viewModel.dataModel;
  59. dataModel.BuildingName = $KoSet(dataModel.BuildingName, data['CmBuilding/Name']);
  60. dataModel.FloorName = $KoSet(dataModel.FloorName, data['CmFloor/Name']);
  61. popupVisible(true);
  62. },
  63. handleAfterLoadingModelByKey: function( data, dataViewModel, isNewInPopup ) {
  64. if( isNewInPopup() == false ) {
  65. BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', dataViewModel.BuildingId(), floors );
  66. }
  67. },
  68. handlePopupShowing: function (that) {
  69. }
  70. } );
  71. function getDefaultFloorForSearch() {
  72. return $SearchView.createDefaultArray( 'FloorId' );
  73. }
  74. viewModel.buildings = buildings;
  75. viewModel.buildingsForSearch = buildingsForSearch;
  76. viewModel.floors = floors;
  77. viewModel.floorsForSearch = floorsForSearch;
  78. viewModel.handleSelectBoxChangeBuilding = function( e ) {
  79. BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', e.value, floors );
  80. viewModel.dataModel.FloorId( null );
  81. }
  82. return viewModel;
  83. };